Automatic detection and installation of client peripheral devices by a server

ABSTRACT

A server-client system is configured to automatically detect and install peripheral devices, such as printers, scanners, etc. that are attached to a client. The server is configured to detect the peripheral device and install a driver that is compatible with the peripheral device. The I/O queue created for the peripheral device is redirected to the port to which the peripheral device is connected.

RELATED APPLICATIONS

This application is a continuation application of U.S. patentapplication Ser. No. 09/458,365 now U.S. Pat. No. 6,789,111 filed Dec.9, 1999, entitled “Automatic Detection And Installation Of ClientPeripheral Devices By A Server,” to Brockway et al.

TECHNICAL FIELD

This invention relates to server-client systems and, in particular, to aserver-client system in which the server is configured to automaticallydetect and install peripheral devices attached to a client.

BACKGROUND

Plug and Play (PnP) technology is an architecture designed and developedby Microsoft Corporation and various independent hardware and softwarevendors that facilitates the integration of peripheral devices, such asprinters, scanners, card readers, etc., into a personal computer system.First introduced with Windows® 95, PnP peripheral devices are configuredto identify themselves to the computer system to which they areattached. A PnP compatible operating system receives identifyinginformation and uses it to automatically locate and load a peripheraldevice driver that is either provided by the user or retrieved from adriver library stored at a location accessible by the computer. Loadingthe peripheral device driver—also referred to as installing theperipheral device—includes defining an input/output (I/O) queue that isused to queue output to the peripheral device and/or receive input fromthe peripheral device. The installation is completed without requiringsignificant user interaction.

Before PnP technology was developed, a system user was required toinstall a peripheral device manually each time such a device wasconnected to the system. Manual installation of peripheral devicedrivers was a burdensome and time-consuming task for the user. Itrequired the user to notify the operating system that the user hadconnected a peripheral device to the system. The user then had to locateand identify a peripheral device driver for the peripheral device,notify the system of the location of the peripheral device driver andidentify an I/O port of the computer to which the peripheral device wasattached so that the operating system could redirect an I/O queue forthe device to the I/O port. The advent of PnP technology relieved theuser from the burdens associated with manually installing peripheraldevice.

Although PnP technology has facilitated installation of peripheraldevices by users with little or no knowledge of computer hardware orsoftware operations, similar technology does not exist for systems inwhich multiple users simultaneously share the computing resources of asingle machine. In such a scenario, client machines are connected to aserver computer using a network. The client machines can be standalonecomputers or terminals. A terminal does not have the processingcapability of a computer, but it does have the ability to utilize theprocessor in the server to execute applications and to provide a userinterface for I/O operations.

A server in this environment typically has an operating system that canrun several client sessions concurrently. Each client user has access toresources of the server, including the processor, data storage,application programs, etc. Software applications that are resident onthe server are available to each client for independent execution by theclient. Each session is independent from other clients connected to theserver and, therefore, one client cannot access information relating toanother client. In this manner, the server provides a logicallyindependent machine for each client connected to the server.

Client users frequently connect peripheral devices to the clientcomputers. For example, a client user may wish to connect a printer tothe user's client computer (a “local” printer) to print data generatedby an application that is running on the server computer. To do this,the user must manually install the local printer as described above andredirect the printer queue created by the server to the I/O port of theclient computer to which the printer is connected. As previously stated,manual installation of peripheral devices is undesirable because itrequires significant time and effort on the part of the user.

SUMMARY

Described herein is a server-client system in which the server isconfigured to automatically detect and install peripheral devicesattached to a client. The server is configured to detect a peripheraldevice connected to a client, install a driver that is compatible withthe peripheral device, and redirect an I/O queue created for theperipheral device to a port of the client to which the peripheral deviceis connected.

Two distinct situations are considered based on whether or not theclient is equipped with an operating system having a PnP subsystem. Ifthe client is PnP compatible, the server utilizes high-level applicationprogram interfaces (APIs) to detect the peripheral devices connected tothe client and determine peripheral identifiers associated with theperipheral devices. The peripheral identifiers are passed to the server,and the server installs a compatible peripheral device driver, createsan I/O queue for the peripheral device, and redirects the I/O queue tothe I/O port on the client to which the peripheral device is connected.

The other situation is where the client is not PnP compatible. One casein which this arises is when the client is a terminal rather than acomputer. Another case is when the client is a computer based on anolder system that runs a pre-Windows® 95 operating system, such asWindows® 3.1. In these cases, the server cannot rely on the client toautomatically identify local peripheral devices.

It is noted that a peripheral identifier is any designation assigned toa peripheral device by which a system can uniquely identify theperipheral device and use to recognize a compatible driver for use withthe peripheral device. A I peripheral identifier can be a PnPidentifier, a device driver name, an arbitrarily assigned variable, orthe like.

To automate peripheral device detection and installation in aserver-client system in which the client is not based on PnParchitecture, the client periodically polls it physical I/O ports forthe existence of a connected peripheral device. This may or may not bedone in response to a request from the server. If a new device isdetected, information about the device, such as a peripheral identifierassociated with the device, is sent to the server. The server thenutilizes the information sent from the client to attempt to locate andinstall a peripheral device driver that is compatible with theperipheral device connected to the client. An I/O queue associated withthe peripheral device is then automatically created and redirected tothe I/O port to which the detected peripheral device is attached.

One way that the server can determine when a newly connected peripheraldevice is found is by including in its periodic request to the client aspecific condition that the client return an enumeration of allperipheral devices connected to the client. The client queries the I/Oports of the client to make this determination and transmits theenumeration back to the server, where the server stores the enumerationin server memory. On a subsequent request for a similar enumeration, theserver compares the enumeration received from the client in response tothe subsequent request with the enumeration stored in memory. If aperipheral device is listed in the subsequent enumeration which was notlisted in the initial enumeration, then the server can identify therecent addition as a peripheral device that is newly connected.

Similarly, if the initial enumeration lists a peripheral device that isnot listed in the subsequent enumeration, the server will also be awarethat the identified peripheral device has been removed from the systemand can make accommodations for deactivating or removing that peripheraldevice from the system.

The same general procedure may also be initiated by the client ratherthan by a request from the server. In that instance, the client detectsa newly connected peripheral device and forwards information relating tothe connected peripheral device to the server. When the new peripheraldevice is identified to the server, it determines whether the device hasalready been announced by the client and resolves any conflicts that mayarise therefrom. The server then installs a driver for the peripheraldevice. For clients that can detect the removal of a device, informationabout the device removal is forwarded to the server so that the servercan make accommodations for removing or uninstalling the peripheraldevice from the system.

There are other ways that the server can determine when a peripheraldevice is connected to the system. The server can request the client todetermine what I/O queues are present on the client. The client may thendetermine the peripheral device identifying information from thesequeues and relay the information to the server. Alternatively, theclient may simply access system device registry information on theclient which will indicate which peripheral devices are connected to theclient and to what I/O port they are connected. These methods are alsodescribed in more detail below.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example and notlimitation in the figures of the accompanying drawings. The same numbersare used throughout the figures to reference like components and/orfeatures.

FIG. 1 is a diagrammatic illustration of a server/client system.

FIG. 2 is a block diagram of a server/client system utilizing a clienthaving Plug and Play capability.

FIG. 3 is a block diagram of a server/client system utilizing a clientthat does not have Plug and Play capability.

FIG. 4 is a flow diagram of a method for automatically detecting, in aserver, peripheral devices connected to a client having a Plug And Playsubsystem.

FIG. 5 is a flow diagram of a method for automatically detecting, in aserver, peripheral devices connected to a client that does not have aperipheral detection subsystem.

DETAILED DESCRIPTION

FIG. 1 shows a server/client computer system 30 having a server 32, afirst client 34 and a second client 36 interconnected via a network 38.The server 32 and the clients 34, 36 have modems or network cards, whichfacilitate access (direct or otherwise) to the network 38 so that theserver 32 and the clients 34, 36 can exchange information over thenetwork 38. The clients 34, 36 each have a desktop 40, 42 interfacedisplayed.

The server 32 is a computer. A client 34, 36 may be a computer havingPlug and Play capability, a computer that is not Plug and Playcompatible, or a terminal, which does not have the processing capabilityof a computer. Implications of utilizing the different types of clientswill be discussed in greater detail below.

It is noted that, although the server/client computer system 30 depictedin FIG. 1 has a first client 34 and a second client 36, there may be oneto any number of clients connected to the server 32. The number ofclients that may be connected to a server is limited only by thearchitecture of a particular server.

The server 32 is configured to provide a logically independent machinefor each client 34, 36 connected to the network 38. That is, the server32 establishes a session for each client 34, 36, provides the desktop40, 42 for each client 34, 36, and makes server resources available tothe clients 34, 36. Such resources include, but are not limited to,allocations of processor time, memory, data storage, video processing,application programs, etc. A user of either of the clients 34, 36interacts with the desktop 40, 42 on the client 34, 36 to run softwareapplications that reside on the server 32. While the user provides inputto and receives output from the client 34, 36, most processing isperformed at the server 32.

The network 38 provides a communications link between the server 32 andthe clients 34, 36 through which data is transmitted. The network 38 maybe a local area network (LAN), a wide area network (WAN), the Internet,or the like, provided that it can accommodate server/clientfunctionality.

FIG. 2 shows a server/client system 50 having a server 52 and a client54. The server 52 includes a processor 56 and memory 58. The server 52also has a network port 60, which facilitates access to the network 38.The network port 60 may be implemented as a modem, network card, orother device, which interfaces the server 52 to the network 38.

The server 52 can be implemented as a common personal computer or othertype of computer, such as a laptop computer, etc. The server 52 runs anoperating system 62, which is stored in memory 58 and executes on theprocessor 56. The operating system 62 must have multitasking capabilitysuch as that provided with a Windows® brand operating system fromMicrosoft Corporation (e.g., Windows® 2000, Windows® 98, Windows® 95,Windows® NT, or other derivative of Windows®). However, othermulti-tasking operating systems may be used.

The server 52 has a printing subsystem 64 implemented in the operatingsystem 62 stored in memory 58. The printing subsystem 62 is used todirect all operations involving printers and printing, includinginstalling printers, creating and managing printer queues, removingprinters, uninstalling printers, etc. The printing subsystem includes aperipheral mapping unit 66 that is configured to map, or redirect,printer queues to printer ports. The printing subsystem 64 also includesan automatic detection unit 68 that is configured to detect peripheraldevices connected to the server/client system 50. The function of theautomatic detection unit 68 is described in greater detail below.

The server 52 is shown having a printer driver 70 and a printer queue 72installed and resident within the memory 58. It is noted, however, thatthe server 52 will only include the printer driver 70 and the printerqueue 72 when a printer has been connected to the system 50 andinstalled on the server 52. The printer driver 70 is a printer-specificsoftware program that provides an interface between a printer and theserver 52 and allows the server 52 to provide print functions via theprinter. When the printer driver 70 is installed on the server 52, theprinter 11 queue 72 is created. The printer queue 72 accepts print jobsfrom the server 52 and queues them for printing. It is noted that if theperipheral device is a device other than an a printer, the printerdriver 70 will be a device driver, if required, for that peripheraldevice.

The client 54 includes memory 76 and a display 78. Similar to the server52, the client 54 also has a network port 80 to facilitate access to thenetwork 38. The network port 80 may be implemented as a modem, networkcard, or other device, which interfaces the client 54 to the network 38.The client 54 also includes a peripheral detection subsystem embodied asa Plug and Play subsystem 82 resident in the memory 76, a first I/O port84, a second I/O port 86, and a printer 88 connected to the first I/Oport 84.

FIG. 3 shows a server/client system 90 comprising the server 52 shown inFIG. 2 and a client 92 that does not have a Plug and Play subsystem. Theclient 92 is similar to the client 54 shown in FIG. 2 in that itincludes a processor 94, memory 96, an operating system 98 resident inthe memory 96, a display 100, a network port 102, a first I/O port 104and a second I/O port 106. The client 92 has a system registry 107located in the memory 96. Instead of the Plug and Play subsystem 82shown in FIG. 2, the client 92 has a peripheral detection unit 108. Theperipheral detection unit 108 may be an integral part of the operatingsystem 98 or it may be a software function that is callable by theoperating system 98 or by application programs. The server/client system90 also includes the printer 88, which is connected to the first I/Oport 104. A printer queue 110 is installed in the memory 96 for theprinter 88.

It is noted that, although the client 92 is depicted as being acomputer, the 10 client 92 may also be a terminal, which does not havethe mass storage or processing capabilities of a computer. The presentinvention functions similarly whether the client 92 is a computer or aterminal. However, if the client 92 is a terminal, the processor 74,operating system 80 and Plug And Play subsystem 82 will not normally bepresent. A terminal simply provides input/output functions to a clientuser, while utilizing the processor 56 on the server 52.

FIG. 4 is a flow diagram depicting a method for automaticallyidentifying and installing peripheral devices connected to a clientwhich has Plug and Play capability. The method is described withcontinuing reference to FIGS. 1 and 2.

At step 200 in FIG. 4, the client 54 establishes a connection with theserver 52. After the client 54 establishes the connection, the client 54waits for an announcement package from the server 52. When the server 52detects the connection from the client 54 (step 202), the server 52 setsup a session for the client 54 at step 204. At step 206, the server 52initializes the data structures necessary to provide the session for theclient 54. When this is completed, the server 52 sends an announcementpackage to the client 54, which signals the client 54 that it cancommence interactive communications with the server 52.

As previously discussed, the client 54 is a computer having a Plug andPlay automatic detection subsystem. A Plug and Play subsystem isdesigned to continuously monitor I/O ports and notify the host computerwhen a new device is connected to the system, or when a connected deviceis disconnected from the system. Peripheral devices, such as printers,each have a unique Plug and Play identifier that is periodically andcontinuously transmitted by the peripheral device to the I/O port towhich it is connected. When the peripheral device is initially connectedto the I/O port, the host computer detects the signal transmitted fromthe peripheral device. The Plug and Play subsystem of the host computeris configured to detect the presence of the peripheral device, recognizethe Plug and Play identifier associated with the peripheral device,identify the manufacturer and model number of the peripheral device fromthe Plug and Play identifier, and configure the host computer to operatein conjunction with the peripheral device. Since the Plug and Playsubsystem 82 of the client 54 executes a process in which it detects andidentifies peripheral devices connected at the client 54 and installsperipheral device drivers on the client 54, there is no need for theserver 52 to independently detect and identify the peripheral devices.The server 52 simply requests information, e.g. peripheral identifiers,from the client 54 that pertains to peripheral devices connected to theclient 54 (step 208 of FIG. 4). This step may also be included in asystem in which the client 54 does not have a Plug and Play subsystem82, provided that the client 54 has some way to detect when a peripheraldevice is physically connected to the client 54.

The Plug and Play subsystem 82 of the client 54 is configured totransmit the Plug and Play identifier of a newly connected or newlydisconnected peripheral device to the automatic detection subsystem 68of the server 52 at step 210. When the server 52 receives thisinformation at step 212, it parses the information to determine theidentity of the peripheral device, whether the device is newly connectedor newly disconnected, and how the server 52 is to respond to thechange.

At step 214, the server 52 installs, removes or uninstalls theidentified peripheral device, depending on the situation. If, forinstance, the Plug and Play subsystem 82 detects that the printer 88 isnewly connected, the Plug and Play subsystem will obtain the Plug andPlay identifier for the printer 88 and transmit the Plug and Playidentifier to the automatic detection unit 68 of the printing subsystem64 on the server 52. The automatic detection unit 68 parses theinformation to determine the manufacturer and the model number of theprinter 88 and to determine that the printer driver 70 corresponding tothe printer 88 should be installed on the server 52. The printer driver70 is installed on the server 52 and the printer queue 72 is created.The peripheral mapping unit 66 then redirects the printer queue 72 tothe I/O port 84 to which the printer 88 is connected. It is noted that,in the alternative, the client 52 may associate a driver name to theperipheral identifier and transmit the driver name to the server 52, asopposed to transmitting the peripheral identifier to the server 52 forthe server 52 to determine the driver associated with the peripheralidentifier.

At step 216, if the client remains in use, the process is repeated fromstep 208, where the Plug and Play subsystem 82 continues to monitor theI/O ports 84, 86 for a change in the status of connected peripheraldevices.

FIG. 5 is a flow diagram depicting a method for automaticallyidentifying and installing peripheral devices connected to a client thatdoes not have Plug and Play capability. The method is described withcontinuing reference to FIG. 1 and FIG. 3.

At step 300, the client 92 establishes a connection with the server 52.After the client 92 establishes the connection, the client 92 waits foran announcement package from the server 52. When the server 52 detectsthe connection from the client 92 (step 302), the server 52 sets up asession for the client 92 and initializes the data structures necessaryto provide the session for the client 92. At step 306, the server 52sends an announcement package to the client 92, which signals the client92 that it can commence interactive communications with the server 52.

Since the client 92 is a computer that is not Plug and Play compatible,there is no integrated process by which the client 92 identifiesperipheral devices attached to it. The server 52 therefore initiates aprocess designed to make this determination.

At step 308, the automatic detection unit 68 of the server 52 sends anenumeration request to the peripheral detection unit 108 of the client92. The peripheral detection unit 108 of the client 92 may be a discretesoftware module resident in the memory 96 of the client 92, or it may befully integrated into the operating system 98 of the client 92, if theclient 92 is a computer. The peripheral detection unit 108 is configuredto receive a request from the server 52 directing the peripheraldetection unit 108 to identify peripheral devices connected to the I/Oports 104, 106 of the client 92 and transmit the identifying informationback to the server 52. As previously noted, this enumeration request maynot be necessary if the client 54 has the capability to detect newlyconnected peripheral devices.

At step 310, the peripheral identification unit 108 of the client 92detects which, if any, peripheral devices are attached to the I/O ports104, 106 of the client 92. One way this is accomplished is for theperipheral identification unit 108 of the client 92 to query the I/Oports 104, 106, one at a time, for an identifying response from anattached device, in this case, the printer 88. As noted above, Plug andPlay printers, such as the printer 88 in FIG. 3, continuously transmitan identifying signal to the port to which they are connected. The queryfrom the peripheral detection unit 108 is designed to detect thisidentifying information.

For example, the peripheral identification unit 108 queries I/O port 104for identifying information for any connected peripheral device. Theperipheral detection unit 108 detects the identifying signal transmittedby the printer 88. The peripheral detection unit 108 correlates the Plugand Play identifier for the printer 88 which is contained in theidentifying signal to the I/O port 104.

The peripheral detection unit 108 proceeds to query I/O port 106 foridentifying information for any connected peripheral device. Noperipheral device is connected to I/O port 106, so the peripheraldetection unit 108 does not receive an identifying signal associatedwith I/O port 106.

Another way in which the peripheral detection unit 108 may determine 19which, if any, peripheral devices are connected to the client 92 is toaccess system information already present on the client 92. Forinstance, since the client 92 has the printer 88 connected to it, theclient 92 should have already installed the printer 88 and created theprinter queue 110 for the printer 88. This is true whether the clienthas a Plug and Play subsystem 82—in which case the installation wasautomatic—or whether the installation was manual in a non-Plug-and-Playsystem. Therefore, the peripheral detection unit 108 simply enumeratesthe queues set up on the client 92 to determine which peripheral devicesare connected thereto. In the present example, the client 92 wouldidentify the printer queue 100 in response to an enumeration request. Itwould then send this information back to the server 52.

The peripheral detection unit 108 may also identify connected peripheraldevices by accessing the system registry 107 of the client 92. Thesystem registry 107 contains, among other things, a listing ofperipheral devices installed on the client 92. The peripheral detectionunit 108 may simply read this list to enumerate the connected peripheraldevices. The information would then be transmitted to the server 52.

For convenience, this discussion will focus on enumerating the attachedperipheral devices by querying the individual I/O ports to obtainconnection information.

After the client 92 has queried all client I/O ports, it transmits anenumeration of the peripheral devices connected to the I/O ports to theserver 52 at step 312. The enumeration includes the peripheralidentifier associated with the peripheral device. In the presentexample, the enumeration contains the peripheral identifier for theprinter 88, and information that the printer 88 is connected to I/O port104. If the enumeration is the first such enumeration received from theclient 92 (step 314), the enumeration is stored at step 316 forcomparison with subsequent enumerations. If there is a previousenumeration, the server 52 compares the current enumeration with theprevious enumeration at step 318. If the peripheral identifier of aperipheral device, such as the printer 88, did not appear on theprevious enumeration but is present on the current enumeration, theserver 52 recognizes the peripheral device as being newly connected andinstalls the peripheral device based on its peripheral identifier. Atstep 320 in FIG. 5, the server 52 installs the printer 88 and createsthe printer queue 110 in the memory 96 of the client 92.

Conversely, if a peripheral device is removed from the client 92, thenat some point, the peripheral device appearing on a previous enumerationwill be absent from a subsequent enumeration. In this situation, theclient 92 will recognize that a peripheral device has been newlydisconnected and the client 92 will either remove or uninstall theperipheral device from the system 90. It is also noted that, in theevent that the client 92 initiates peripheral device detection withoutrequiring a request from the server 52, the removal of a peripheraldevice will be detected by the client 92 and information relating to theremoved device is sent to the server 52 for appropriate processing.

It is noted that there is a significant difference between “removing” aperipheral device and “uninstalling” a peripheral device. Device removaltemporarily disables a device by deleting any memory copy of the deviceinformation from the system. However, the device driver that wasinstalled for the device is still available for later use. This way, ifthe device is physically reattached to the system, the system can simply“restart” the device.

A device uninstall is more permanent that a device removal. With adevice uninstall, the device driver is deleted from the system togetherwith any memory copy of the device information. If the device isphysically reattached to the system, the device must be reinstalledbefore it will be operational.

The system and method as described herein overcomes the problems ofhaving to manually install client peripheral devices on a server. Aclient user can now utilize the advantage of automatically detecting andinstalling peripheral devices connected to the client.

Although the invention has been described in language specific tostructural features and/or methodological steps, it is to be understoodthat the invention defined in the appended claims is not necessarilylimited to the specific features or steps described. Rather, thespecific features and steps are disclosed as preferred forms ofimplementing the claimed invention.

1. A method for automatically configuring a server for use with aperipheral device connected to an input/output port of a clientcomputer, the method comprising: establishing a connection with theserver by the client computer; detecting the connection from the clientcomputer by the server and establishing a session for the clientcomputer; initializing data structures to provide the session for theclient computer and sending a signal to the client computer to commencecommunications with the server; detecting a presence of the peripheraldevice by receiving a peripheral identifier uniquely identifying theperipheral device physically inserted into the input/output port of theclient computer, the peripheral identifier being received by the clientcomputer, wherein detecting the presence of the peripheral device is inresponse to one or more requests for enumerations of client peripheraldevices by the server to the client computer; transmitting theidentifier to the server; and installing a peripheral driver, on theserver, for use with the peripheral device identified by the receivedperipheral identifier.
 2. The method recited in claim 1, furthercomprising: physically removing the peripheral device from theinput/output port of the client computer; and removing the peripheraldriver used with the peripheral device identified by the receivedperipheral identifier.
 3. The method recited in claim 1, furthercomprising: physically removing the peripheral device from theinput/output port of the client computer; and uninstalling theperipheral driver used with the peripheral device identified by thereceived peripheral identifier.
 4. The method recited in claim 1,wherein the identified peripheral device is a Plug And Play compatibleperipheral device.
 5. The method recited in claim 1, wherein theidentified peripheral device is a printer.
 6. The method recited inclaim 1, wherein receiving the peripheral identifier further comprisesreceiving a Plug and Play identifier corresponding to the peripheraldevice.
 7. The method recited in claim 1, wherein receiving theperipheral identifier further comprises comparing a first enumeration ofperipheral devices received from the client computer by the server witha second enumeration of peripheral devices received from the clientcomputer by the server.
 8. The method as recited in claim 1, furthercomprising identifying the peripheral device by the client computer. 9.The method as recited in claim 8, further comprising the server notdetecting the peripheral device or identifying the peripheral device.10. A client/server computer system, comprising: at least one clienthaving a printer physically inserted into an input/output port thereof,the client being configured to detect a presence of the printer byreceiving a peripheral identifier uniquely identifying the printer newlyconnected to the input/output port of the client computer; a servercomprising: a printing subsystem configured to receive the peripheralidentifier from the client in response to at least one request by theprinter subsystem to the client for an enumeration of peripheralidentifiers corresponding to printers connected at the client; a printerdriver associated with the peripheral identifier configured to installthe printer, including setting up a print queue on the server for theprinter; and a peripheral mapping unit to redirect printer data to theinput/output port of the client; wherein the client establishes aconnection with the server and transmit the peripheral identifier to theserver; and wherein the server detects the connection from the clientcomputer, establishes a session for the client computer, initializesdata structures to provide the session for the client computer and sendsa signal to the client computer to commence communications therewith.11. The client/server system as recited in claim 10, wherein the printeris a Plug And Play compatible printer.
 12. The client/server system asrecited in claim 10, wherein the printing subsystem received theperipheral identifier without requiring interaction by a user.
 13. Theclient/server system as recited in claim 10, wherein the peripheraldevice driver is installed without requiring interaction by a user. 14.The client/server computer system recited in claim 10, furthercomprising the client being configured to identify the peripheraldevice.
 15. The client/server computer system recited in claim 14,further comprising the server being configured to not detect theperipheral device or identifying the peripheral device.
 16. A method forautomatically configuring a server for use with a peripheral deviceconnected to an input/output port of a client computer, the methodcomprising: establishing a connection with the server by the clientcomputer; detecting the connection from the client computer by theserver and establishing a session for the client computer; initializingdata structures to provide the session for the client computer andsending a signal to the client computer to commence communications withthe server; detecting a presence of the peripheral device by receiving aperipheral identifier uniquely identifying the peripheral devicephysically inserted into the input/output port of the client computer,the peripheral identifier being received by the client computer, whereinreceiving the peripheral identifier further comprises comparing a firstenumeration of peripheral devices received from the client computer bythe server with a second enumeration of peripheral devices received fromthe client computer by the server; transmitting the identifier to theserver; and installing a peripheral driver, on the server, for use withthe peripheral device identified by the received peripheral identifier.